package cn.lingyangwl.agile.misc.order.model.entity;

import cn.lingyangwl.agile.model.*;
import cn.lingyangwl.agile.tenant.core.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单
 * 一个订单记录就是一个支付记录
 *
 * @author shenguangyang
 */
@Getter
@Setter
@TableName("om_order")
@DataIsolation(filterMainTenant = true, filterTenant = true, tableName = "om_order")
public class Order extends BasePlusPO {
    @TableId
	private Long id;

	/**
	 * 取餐号
	 */
	private String callNo;

	/**
	 * 订单编号
	 */
	private String orderNo;

	/**
	 * 订单来源
	 */
	private String orderFrom;

	/**
	 * 订单来源名称
	 */
	private String orderFromName;
	
	/**
	 * 商户订单号(支付中心)
	 */
	private String mchTradeNo;
	
	/**
	 * 提货编码(eg: 取餐号)
	 */
	private String deliveryCode;
	
	/**
	 * 桌号id
	 */
	private Long tableId;
	
	/**
	 * 桌号
	 */
	private String tableNo;
	
	/**
	 * 会员id
	 */
	private Long userId;
	
	/**
	 * 订单状态
	 */
	private String orderStatus;
	
	/**
	 * 支付状态
	 */
	private String payStatus;

	/**
	 * 收货人手机号
	 */
	private String receiverPhone;

	/**
	 * 收货人省id
	 */
	private Long receiverProvinceId;

	/**
	 * 收货人市id
	 */
	private Long receiverCityId;

	/**
	 * 收货人区县id
	 */
	private Long receiverDistrictId;

	/**
	 * 收货人详细地址
	 */
	private String receiverAddress;

	/**
	 * 收货人地址经度
	 */
	private String receiverLongitude;

	/**
	 * 收货人地址纬度
	 */
	private String receiverLatitude;
	
	/**
	 * 购买人要求配送时间
	 */
	private LocalDateTime buyerAskDeliveryTime;
	
	/**
	 * 购买人备注
	 */
	private String buyerRemark;
	
	/**
	 * 支付类型
	 */
	private String payType;
	
	/**
	 * 配送方式 (10外卖配送 20上门取30打包带走40店内就餐
	 */
	private String deliveryWay;
	
	/**
	 * 商品总价格
	 */
	private BigDecimal totalPrice;
	
	/**
	 * 主租户id
	 */
	private Long mainTenantId;
	
	/**
	 * 配送价钱
	 */
	private BigDecimal deliveryPrice;
	
	/**
	 * 订单优惠金额（满减）
	 */
	private BigDecimal promotionPrice;
	
	/**
	 * 优惠券id
	 */
	private Long couponId;
	
	/**
	 * 优惠卷金额
	 */
	private BigDecimal couponPrice;
	
	/**
	 * 订单总金额
	 */
	private BigDecimal orderPrice;
	
	/**
	 * 抵扣之后应付金额
	 */
	private BigDecimal payPrice;
	
	/**
	 * 支付时间
	 */
	private LocalDateTime payTime;
	
	/**
	 * 订单配送时间
	 */
	private LocalDateTime deliveryTime;
	
	/**
	 * 订单签收时间
	 */
	private LocalDateTime signTime;
	
	/**
	 * 订单完成时间
	 */
	private LocalDateTime finishTime;
	
	/**
	 * 订单关闭时间
	 */
	private LocalDateTime closeTime;
	
	/**
	 * 是否允许订单评价
	 */
	private Boolean isEvaluate;
	
	/**
	 * 是否允许退款
	 */
	private Boolean isEnableRefund;
	
	/**
	 * 卖家留言
	 */
	private String remark;
	
	/**
	 * 商品数量
	 */
	private Integer goodsNum;

	/**
	 * 商品id
	 */
	private Long goodsId;
	
	/**
	 * 配送状态, 1=未发货, 2=已发货 3=未收货 4=已收货
	 */
	private String deliveryStatus;
	
	/**
	 * 预计发货时间
	 */
	private LocalDateTime predictDeliveryTime;

    public static LambdaQueryWrapper<Order> lqw() {
		return Wrappers.lambdaQuery();
	}
}
